Apache Camel-এ choice() এবং when() ব্যবহার করে কন্ডিশনাল রাউটিং করা হয়। এই ফিচারটি আপনাকে একটি রাউটে বিভিন্ন শর্তের ভিত্তিতে ভিন্ন ভিন্ন পথে মেসেজগুলোকে রাউট করতে দেয়। এটি Enterprise Integration Patterns-এর Content-Based Router প্যাটার্নের মতো কাজ করে।
choice() এবং when() এর ব্যবহার
- choice(): এটি একটি ব্লক যা একাধিক শর্তের ভিত্তিতে রাউটিংয়ের লজিক নির্ধারণ করে।
- when(): এটি একটি শর্তগত বিবৃতি যা নির্দিষ্ট শর্ত পূরণ হলে কার্যকর হয়।
উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো যেখানে choice() এবং when() ব্যবহার করে কন্ডিশনাল রাউটিং করা হয়েছে:
import org.apache.camel.builder.RouteBuilder;
public class ConditionalRoutingRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:start")
.choice()
.when(simple("${body} contains 'urgent'")) // যদি মেসেজে 'urgent' থাকে
.to("log:urgent") // লগ করা
.when(simple("${body} contains 'normal'")) // যদি মেসেজে 'normal' থাকে
.to("log:normal") // লগ করা
.otherwise() // অন্যথায়
.to("log:default") // লগ করা
.end();
}
}
উদাহরণের ব্যাখ্যা
- from("direct"):
direct:startপয়েন্ট থেকে মেসেজ গ্রহণ করা হচ্ছে। - choice(): রাউট শুরু হচ্ছে এবং এখানে আমরা কন্ডিশনাল রাউটিং যুক্ত করছি।
- when(): এখানে বিভিন্ন শর্ত পরীক্ষা করা হচ্ছে:
- প্রথম শর্তে চেক করা হচ্ছে যদি মেসেজের কনটেন্টে 'urgent' থাকে, তাহলে মেসেজটি
log:urgentএ পাঠানো হচ্ছে। - দ্বিতীয় শর্তে চেক করা হচ্ছে যদি মেসেজের কনটেন্টে 'normal' থাকে, তাহলে এটি
log:normalএ পাঠানো হচ্ছে।
- প্রথম শর্তে চেক করা হচ্ছে যদি মেসেজের কনটেন্টে 'urgent' থাকে, তাহলে মেসেজটি
- otherwise(): যদি উভয় শর্তই মিলে না, তাহলে মেসেজটি
log:defaultএ পাঠানো হচ্ছে।
সম্পূর্ণ উদাহরণ রান করা
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
public class MainApp {
public static void main(String[] args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
// কন্ডিশনাল রাউটিং যুক্ত করা
camelContext.addRoutes(new ConditionalRoutingRoute());
// ক্যামেল কনটেক্সট শুরু করা
camelContext.start();
// মেসেজ পাঠানো
camelContext.createProducerTemplate().sendBody("direct:start", "This is an urgent message.");
camelContext.createProducerTemplate().sendBody("direct:start", "This is a normal message.");
camelContext.createProducerTemplate().sendBody("direct:start", "This is a default message.");
// কিছু সময়ের জন্য ক্যামেল চালিয়ে রাখা
Thread.sleep(5000);
// ক্যামেল কনটেক্সট বন্ধ করা
camelContext.stop();
}
}
উপসংহার
Apache Camel-এ choice() এবং when() ব্যবহার করে কন্ডিশনাল রাউটিং একটি সহজ এবং কার্যকরী পদ্ধতি। এটি আপনাকে বিভিন্ন শর্ত অনুযায়ী ভিন্ন ভিন্ন রাস্তায় মেসেজগুলোকে পরিচালনা করতে সক্ষম করে। এই ধরনের রাউটিং আপনার অ্যাপ্লিকেশনের কার্যকারিতা এবং স্থিতিশীলতা উন্নত করে।
Read more